CloudFront に独自ドメインと無料 SSL を設定するため、 Route 53 と ACM を使用する
こんにちは、クラスメソッドタイランドのPOPです。
今回は「CloudFront の経由で EC2 インスタンス上の Webサイトを公開する」のブログに続き、Route 53 でドメインネームシステム (DNS) を変更し、AWS Certificate Manager を使ってSSL証明書を作成する方法をご紹介致します。
Amazon Route 53 とは
Amazon Route 53 は、Amazon Web Services (AWS) が提供するスケーラブルなドメインネームシステム (DNS) ウェブサービスです。ユーザーがドメイン名を登録し、DNSレコードを管理することができ、トラフィックのルーティングやヘルスチェック機能を通じてアプリケーションの可用性を向上させることができます。高い可用性と信頼性を提供し、グローバルなインフラストラクチャの活用ができます。
前提条件
Amazon CloudFront
※CloudFront のディストリビューションが作成済であること。
CloudFront のディストリビューションの作成方法については、以下のリンクを参照してください。
Route 53 の作成と SSL証明書の作成の構成概要
すでに CloudFront にディストリビューションがある場合は、Webサイトのドメインネームの変更を開始し、以下の図に従って SSL証明書を作成しましょう。
Route 53 でドメインネームの変更
まず、CloudFront の「ディストリビューション」画面から「ディストリビューションドメイン名」をコピーしておきます。
「Route 53」を検索して選択します。
左側のメニューから「ホストゾーン」をクリックし、登録済みの「ホストゾーン名」をクリックします。(今回は「train.cmthai.click」を選択します)
「レコードを作成」をクリックします。
次に、以下のように「レコードをクイック作成」を設定します。
・レコード名:「pop-ec2」(任意の名前を入力してください)
・エイリアス: 「エイリアス」を ON してください。(これをすると、CloudFront を設定するためのオプションに変わります)
・トラフィックのルーティング先:「CloudFront ディストリビューションへのエイリアス」を選択し、先ほどコピーした「ディストリビューションドメイン名」をフィールドに貼り付けます。
・「レコードを作成」をクリックします。
次に、CloudFront に対して指定したレコード名を検索し、コピーしておきます。
この例では、「pop-ec2.train.cmthai.click」というレコード名を使用します。
次に、次のようにブラウザで URL を開きます。
https://【レコード名】
これで Route 53 でのドメインネームの変更は完了しましたが、AWS Certificate Manager で SSL証明書をリクエストする必要があるため、まだ使用できません。
AWS Certificate Manager とは
AWS Certificate Manager (ACM) は、Amazon Web Services (AWS) が提供するサービスで、SSL/TLS 証明書の管理を簡素化します。ユーザーは証明書を簡単に取得、デプロイ、更新でき、ウェブサイトやアプリケーションのセキュリティを向上させることができます。ACMは自動的に証明書の更新を行い、運用負担を軽減します。
AWS Certificate Manager で SSL証明書をリクエスト
まず、Route 53 で登録したホストゾーンの画面に移動し、設定した「レコード名」を再度コピーしておきます。
※今回は「pop-ec2.train.cmthai.click」というレコード名を使用して SSL証明書をリクエストします。
「Certificate Manager」を検索して選択します。
「バージニア北部」を選択します。(SSL 証明書のリクエストは米国内の地域からのみ取得する必要があります)
左側のメニューから「証明書を一覧」を選択し、「リクエスト」をクリックします。
「次へ」をクリックします。
完全修飾ドメイン名:「Route 53 でホストゾーンのレコード名」(例: "pop-ec2.train.cmthai.click")。
または、登録したホストゾーンでレコード名で作成したすべてのレコード名をサポートする SSL証明書をリクエストすることもできます。
完全修飾ドメイン名
・「*.train.cmthai.click」
・「train.cmthai.click」
こうすることで、毎回 AWS Certificate Manager で SSL証明書をリクエストせずに、Route 53 でホストゾーンにレコード名を作成できるようになります。
そこで今回はこの手順をします。そして、一番下までスクロールし、「リクエスト」をクリックします。
自動的にこの画面に移動されるので、「Route 53 でレコードを作成」をクリックします。
「レコードを作成」をクリックします。
SSL証明書のリクエストが完了すると、次のように画面が表示されます。
最後に、左のメニューから「証明書を一覧」をクリックし、作成した証明書の「ステータス」を確認します。
ステータスが「発行済み」に変わるまで待ち SSL証明書のリクエストは完了です。
次に、Route 53 でホストゾーン画面に再度移動します。ここで CNAME が作成されていることがわかります。
CloudFront で SSL証明書の接続
まず、Route 53 で登録したホストゾーンの画面に移動し、CloudFront に対して指定した「レコード名」を再度コピーしておきます。
※今回は「pop-ec2.train.cmthai.click」というレコード名を使用して CloudFront で SSL証明書を接続します。
CloudFront 画面に移動し、左側のメニューから「ディストリビューション」をクリックし、「ID」をクリックします。
「編集」をクリックします。
「項目を追加」をクリックします。
以下のように設定します。
・Alternative domain name (CNAMEs) - optional: 先ほどコピーした「レコード名」をフィールドに貼り付けます。(例: "pop-ec2.train.cmthai.click")
・Custom SSL certificate - optional: すでに作成している SSL証明書を選択します。(例: "*.train.cmthai.click (xxx-xxx-xxx-xxx-xxx)")
・一番下までスクロールし、「変更を保存」をクリックします。
「代替ドメイン名」と「カスタム SSL 証明書」が追加されたことがわかります。
「代替ドメイン名」については、Webサイトのページを表示するための URL として使用するので、コピーしておきます。(例: "pop-ec2.train.cmthai.click")
そして、最終変更日を確認し、「デプロイ」と表示されていることがわかります。最終変更日が現在の日付に変わるまで少々お待ちください。(今回は約 4 分程度かかります)
もう一度 Webサイトのページに戻って更新すると、Webサイトが使用可能になっていることがわかります。
または、PHP 8.2 と Apache をインストールする手順を完了すると、以下の URL を開くこともできます。
https://【レコード名】/test.php
まとめ
Route 53 で Webサイトのドメイン名を変更すると、URL のセキュリティを強化できます。
また、AWS Certificate Manager で SSL証明書をリクエストすると、ウェブサイトの信頼性が高まります。 AWS Certificate Manager サービスは無料で利用できます。
この記事がどなたかのお役に立てば幸いです。
以上、クラスメソッドタイランドのPOP(Tinnakorn Maneewong)でしたっ!
関連記事
・CloudFront の経由で EC2 インスタンス上の Webサイトを公開する | DevelopersIO
・Route 53 でドメインを取得・購入する(2019版) | DevelopersIO
・お名前.comで取得したドメインをRoute53のネームサーバで管理設定してみた | DevelopersIO
・Amazon CloudFront(グローバルなコンテンツ配信ネットワーク)| AWS
・Amazon Route 53(スケーラブルなドメインネームシステム (DNS))| AWS
・AWS Certificate Manager(SSL/TLS 証明書のプロビジョン、管理、およびデプロイ)| AWS